查看原文
其他

智汇华云 | AIOps之动态阈值—SARIMA模型详解(二)

华云 2022-07-03

近年来,IT运维人工智能(AIOps)已成为了应对IT系统与日俱增的复杂性的很好的解决方案。AIOps基于大数据、数据分析和机器学习来提供洞察力,并为管理现代基础设施和软件所需的任务提供更高水平的自动化(不依赖于人类操作员)


因此,AIOps具有巨大的价值。展望未来,AIOps将在IT团队提高效率方面发挥关键作用。它还会使应用复杂的下一代技术成为可能,而且那些技术的复杂性是传统解决方案无法胜任的。


华云数据“智汇华云”专栏将为您奉上“AIOps之动态阈值—SARIMA模型详解”系列文章,本期将为您讲解其第二部分。


本期讲解人


张歆纬

运维开发组研发工程师


AR模型 Auto Regressive


在自回归模型中,我们使用过去变量的线性组合来预测。

自回归表示这是对于自身变量的回归。


p阶AR模型可以写成:

y_t=c+ϕ_1 y_(t-1)+ϕ_2 y_(t-2)+⋯+ϕ_p y_(t-p)+ε_t

这里ε_t是白噪声,我们把这个叫做AR(p)模型,p阶自回归模型。

下图展示了AR(1)模型和AR(2)模型:

 

对于AR(1)模型:

当 ϕ_1=0,yt就是白噪声

当 ϕ_1=1并且c=0,yt就是随机漫步

当 ϕ_1=1并且c≠0,yt就是带偏移量的随机漫步

当ϕ_1<0,yt趋向于在正负值之间振动


我们通常会限制AR模型只用于平稳的数据,所以我们对参数有一些限制:

对于AR(1)模型:-1<ϕ_1<1

对于AR(2)模型:-1<ϕ_2<1,ϕ_1+ϕ_2<1,ϕ_2-ϕ_1<1


对于p>2,参数限制就非常复杂,我们可以用python的包来搞定。


MA模型 Moving Average


不像AR模型中使用过去的预测变量,MA模型使用过去的预测误差。

y_t=c+ε_t+θ_1 ε_(t-1)+θ_2 ε_(t-2)+⋯+θ_q ε_(t-q)

ε_t是白噪声。我们把这个叫做MA(q)模型,q阶移动平均模型。

下图展示了MA(1)模型和MA(2)模型:

 

我们可以把任意平稳的AR(p)模型写成MA(∞)模型。比如,我们可以把AR(1)模型写成:

y_t=ϕ_1 y_(t-1)+ε_t

     =ϕ_1 (ϕ_1 y_(t-2)+ε_(t-1))+ε_t

     =ϕ_1^2 y_(t-2)+ϕ_1 ε_(t-1)+ε_t

     =ϕ_1^3 y_(t-3)+ϕ_1^2 ε_(t-2)+ϕ_1 ε_(t-1)+ε_t


有-1<ϕ_1<1,当k变大时,ϕ_1^k会变小。所以我们最终会得到:

y_t=ε_t+ϕ_1 ε_(t-1)+ϕ_1^2 ε_(t-2)+ϕ_1^3 ε_(t-3)+⋯

这是一个MA(∞)模型。

如果我们给MA模型加一些限制,我们可以称MA模型是可逆的,我们可以把任意MA(q)模型写成AR(∞)模型。


可逆性限制和平稳性限制类似:

对于MA(1)模型:-1<θ_1<1

对于MA(2)模型:-1<θ_2<1,θ_2+θ_1>-1,θ_1-θ_2<1


对于q>2,参数限制就非常复杂,我们可以用python的包来搞定。


ARIMA模型 

Auto Regressive Integrated Moving Average


如果我们组合AR和MA模型并差分,我们可以得到ARIMA模型。


模型可以写成:

y_t^'=c+ϕ_1 y_(t-1)^'+⋯+ϕ_p y_(t-p)^'+θ_1 ε_(t-1)+⋯+θ_q ε_(t-q)+ε_t

y_t^'是差分过的序列,右侧的预测器包含延迟yt和延迟误差。我们叫这个ARIMA(p,d,q)模型:

p:自回归阶数

d:差分次数

q:移动平均阶数


有一些特殊的ARIMA模型如下:

白噪声:ARIMA(0,0,0)

随机漫步:ARIMA(0,1,0)

带偏移量的随机漫步:ARIMA(0,1,0)带常数

自回归:ARIMA(p,0,0)

移动平均:ARIMA(0,0,q)


用后移符号,我们可以把ARIMA模型写成:

常数c在长期预测中十分重要:

如果c=0并且d=0,长期预测值会趋向于0

如果c=0并且d=1,长期预测值会趋向于非零常数

如果c=0并且d=2,长期预测值会变成一条直线

如果c≠0并且d=0,长期预测值会趋向于数据的平均值

如果c≠0并且d=1,长期预测值会变成一条直线

如果c≠0并且d=2,长期预测值会变成二次抛物线


偏自相关系数 partial autocorrelation


自相关系数测量了yt和yt-k的关系。如果yt和yt-1相关,那么yt-1和yt-2肯定也相关。但这样的话,yt和yt-2可能也相关,仅仅只因为他们都跟yt-1相关,而不是因为yt-2中有新的信息可以用于预测yt。


为了解决这个问题,我们可以使用偏自相关系数。这是在移除延迟1,2,3,…,k-1的影响后,测量yt和yt-k之间的关系。


如果差分过后的ACF和PACF图满足以下形式,数据可能是ARIMA(p,d,0)模型:

ACF是指数衰减或者正弦式的

在PACF中,在延迟p的地方有一个明显的突刺,但后面没有


如果差分过后的ACF和PACF图满足以下形式,数据可能是ARIMA(0,d,q)模型:

PACF是指数衰减或者正弦式的

在ACF中,在延迟q的地方有一个明显的突刺,但后面没有


最大似然估计 maximum likelihood estimation


估算模型的时候,我们使用最大似然估计。已知某个随机样本满足某种概率分布,但是其中具体的参数不清楚,参数估计就是通过若干次试验,观察其结果,利用结果推出参数的大概值。


对于ARIMA模型,MLE通过最小化

来获得。


对于给定的p,d,q组合,我们可以用python最大化log likelihood来找到合适的p,d,q。


信息准则 information criteria


赤池信息准则(AIC)在选取参数时非常有用,可以写成:

AIC=-2 log⁡(L)+2(p+q+k+1)

其中L是数据的likelihood,如果c=0,k=0;如果c≠0,k=1。


修正赤池信息准则(AICc)可以写成:

AICc=AIC+(2(p+q+k+1)(p+q+k+2))/(T-p-q-k-2)


贝叶斯信息准则(BIC)可以写成:

BIC=AIC+[log⁡(T)-2](p+q+k+1)

最小化AIC,AICc或者BIC可以得到较优模型,我们偏向于选择AIC。


pmdarima原理


pmdarima是一个python解决ARIMA和SARIMA模型的包,主要使用了Hyndman-Khandakar算法的变形,组合了单位根检验,最小化AICc和MLE。


用于自动化ARIMA模型拟合的Hyndman-Khandakar算法:

1、重复使用KPSS检测决定差分次数

2、差分后最小化AICc来选取p和q的值,这种算法使用了阶梯式搜索来遍历模型空间,而不是考虑所有p和q的组合

a、拟合四个初始模型:

ARIMA(0,d,0)

ARIMA(2,d,2)

ARIMA(1,d,0)

ARIMA(0,d,1)

常数项会被考虑进去除非d=2。如果d≤1,拟合额外的一个模型:

ARIMA(0,d,0)没有常数项


b、在步骤a中最优的模型(最小的AICc值)会被设置为当前模型


c、微调当前模型:

对p或/和q±1

加入/去除常数项c

新的最优模型变成当前模型


d、重复步骤c直到没有更小的AICc



SARIMA模型 

Seasonal Auto Regressive Integrated Moving Average


ARIMA模型的缺陷在于没有考虑周期性,加入周期项可以得到SARIMA模型:

ARIMA     (p,d,q)       (P,D,Q)m

           非周期性部分   周期性部分

m是每年的观测数量。P,D,Q作为周期性参数,p,d,q作为非周期性参数。

模型的周期性部分和非周期性部分很相似,但包括了周期后移。


比如,ARIMA(1,1,1)(1,1,1)4对于季度数据(m=4)可以写成:

(1-ϕ_1 B)(1-Φ_1 B^4 )(1-B)(1-B^4 ) y_t=(1+θ_1 B)(1+Θ_1 B^4 ) ε_t


PACF和ACF图中的周期性延迟可以看出AR模型或者MA模型的周期性部分。

比如,SARIMA(0,0,0)(0,0,1)12模型会有以下特性:

ACF中延迟12有突刺,但没有其他的明显突刺

PACF的周期性延迟有指数衰减,比如在延迟12,24,36的地方

相似的,SARIMA(0,0,0)(1,0,0)12模型会有以下特性:

ACF的周期性延迟有指数衰减

PACF中延迟12有突刺


另外,根据简约性原则parsimony principle,p+d+q+P+D+Q≤6为佳。


下面的例子可以很好的解释模型拟合的过程:


例子:欧洲季度零售指数

 


这个例子是欧洲零售指数从1996到2011年的数据,我们把它套进SARIMA模型进行预测。

这组数据明显是不平稳的,并有一些周期性,所以我们先进行周期性差分,如下图:


 

这看起来还是不平稳,我们再进行一次差分,如下图:

 


ACF图中延迟1的明显突刺说明有个非周期性的MA(1)部分,ACF图中延迟4的明显突刺说明有个周期性MA(1)的部分。所以,我们从SARIMA(0,1,1)(0,1,1)4模型开始,得到拟合模型的残差,如下图:

 


ACF和PACF都在延迟2有明显突刺,延迟3的突刺也不小,所以模型应该还有额外的非周期性部分。SARIMA(0,1,2)(0,1,1)4模型的AICc是74.36,SARIMA(0,1,3)(0,1,1)4模型的AICc是68.53。其他的AR参数都没有更小的AICc值。所以,我们选择SARIMA(0,1,3)(0,1,1)4,画出该模型的残差:


 


所有突刺都在合理范围内,残差值看起来像白噪声了。Ljung-Box测试也显示残差没有自相关性了。

然后,我们就可以用该模型进行预测了:

 


图中显示了预测值以及80%和95%的置信区间。


指标动态阈值原理

我们已经了解了SARIMA模型,并可以对时间序列数据进行预测了。对于动态阈值,我们首先获取历史数据,对数据进行处理,需要对缺失数据进行一些填充。然后我们进行SARIMA模型拟合,得出最优模型之后,对未来指标走势进行预测,通过95%的置信区间生成阈值区间,如果指标超出这个区间,我们认为指标异常,对用户进行告警。每天我们都会重复以上操作,让模型拟合更加准确,从而使动态阈值功能日趋完善。



相关阅读

智汇华云 | AIOps之动态阈值—SARIMA模型详解(一)

智汇华云 | Web常见安全漏洞分享

智汇华云 | 华云数据:如何构建企业上云安全防护体系

智汇华云 | ping不通 找房东——从一个ping包来解析网络转发原理



点击阅读原文,了解华云数据更多信息


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存